Saltar al contenido principal

🎢 Proyecto: PyLand Theme Park

Estado: Confidencial
De: Dirección General de PyLand
Para: Equipo de Desarrollo
Asunto: Nuevo Sistema de Gestión de Colas

Estimados desarrolladores:

Necesitamos modernizar la gestión de nuestras atracciones. Actualmente todo se hace a papel y lápiz, y es un caos. Requerimos un sistema en Python que gestione el flujo de visitantes en el parque.

A diferencia de otras veces, no os diremos cómo programar (qué clases crear), sino qué necesita hacer el sistema. Vosotros sois los expertos en arquitectura (POO).


📝 Requisitos Funcionales​

1. Los Visitantes​

Nuestro parque recibe a miles de personas. De cada visitante necesitamos saber:

  • Su nombre.
  • Su edad (importante para zonas infantiles).
  • Su altura en cm (vital para la seguridad).
  • Si tiene Pase VIP o no (los VIPs no hacen cola).

2. Las Atracciones​

Tenemos varias atracciones, pero no todas funcionan igual. Todas tienen un nombre y una capacidad máxima por viaje (ej: en la montaña rusa caben 20 personas por vuelta).

Necesitamos gestionar tres tipos de atracciones:

  • Atracciones Estándar: Cualquiera puede entrar.
  • Montañas Rusas: Por seguridad, nadie que mida menos de 1.30m puede subir, aunque tenga entrada.
  • Zona Infantil: Diseñadas para niños. Nadie mayor de 10 años puede subir.
    • Excepción de seguridad: Si el niño mide menos de 100cm, el sistema debe avisar de que "Necesita acompañante", pero le deja pasar.

3. Gestión de Colas y Acceso​

El sistema debe permitir que los visitantes intenten entrar a una atracción:

  • Si la atracción tiene sitio libre en ese momento (no está llena la cola), el visitante entra.
  • IMPORTANTE: Si el sistema detecta que el visitante no cumple los requisitos (altura o edad), debe rechazarlo inmediatamente e imprimir el motivo.
  • Gestión de VIPs: Si un visitante tiene pase VIP, no se pone al final de la cola... ¡se pone el primero! (o entra directamente).

4. Funcionamiento​

Cada atracción debe tener un mecanismo para "Iniciar Viaje":

  • Cuando arranca el viaje, las personas que estaban en la cola "suben" (dejan la cola).
  • El sistema debe imprimir quiénes han subido.

🧪 Pruebas Aceptación (Lo que probará el cliente)​

El CEO ejecutará un script (main.py) que hará lo siguiente:

  1. Creará el parque con: una Montaña Rusa ("Dragon Khan"), una atracción infantil ("Tazas") y una normal ("Cine 4D").
  2. Intentará subir a un niño pequeño en el Dragon Khan (debería fallar).
  3. Intentará subir a un adulto en las Tazas (debería fallar).
  4. Creará una cola de gente normal y luego llegará un VIP. Al iniciar el viaje, el VIP debería haber entrado antes que los que llegaron primero.

💡 Consejos para el Equipo de Desarrollo​

  • Pensad bien cuántas clases necesitáis. ¿Una clase para todo? ¿Herencia?
  • ¿Dónde guardaréis a la gente que está esperando? (Pista: Listas).
  • ¿Cómo resolver lo de los VIPs? (Pista: insert(0, ...) vs append(...)).

¡Esperamos vuestro diseño!